
using System;

namespace SpotifyGenNHibernate.EN.Spotify
{
        public class CancionEN
        {
        /**
         *
         */

        private int id;

        /**
         *
         */

        private String nombre;

        /**
         *
         */

        private double duracion;

        /**
         *
         */

        private SpotifyGenNHibernate.Enumerated.Spotify.TGenerosEnum genero;

        /**
         *
         */

        private bool comprable;

        /**
         *
         */

        private double precio;

        /**
         *
         */

        private Nullable<DateTime> fechaLanzamiento;

        /**
         *
         */

        private int year;

        /**
         *
         */

        private bool disponible;

        /**
         *
         */

        private System.Collections.Generic.IList<SpotifyGenNHibernate.EN.Spotify.ArtistaEN> artista;

        /**
         *
         */

        private System.Collections.Generic.IList<SpotifyGenNHibernate.EN.Spotify.AlbumEN> albumes;

        /**
         *
         */

        private System.Collections.Generic.IList<SpotifyGenNHibernate.EN.Spotify.CancionBibliotecaEN> cancionesBiblioteca;





        public virtual int Id { get { return id; } set { id = value;  } }


        public virtual String Nombre { get { return nombre; } set { nombre = value;  } }


        public virtual double Duracion { get { return duracion; } set { duracion = value;  } }


        public virtual SpotifyGenNHibernate.Enumerated.Spotify.TGenerosEnum Genero { get { return genero; } set { genero = value;  } }


        public virtual bool Comprable { get { return comprable; } set { comprable = value;  } }


        public virtual double Precio { get { return precio; } set { precio = value;  } }


        public virtual Nullable<DateTime> FechaLanzamiento { get { return fechaLanzamiento; } set { fechaLanzamiento = value;  } }


        public virtual int Year { get { return year; } set { year = value;  } }


        public virtual bool Disponible { get { return disponible; } set { disponible = value;  } }


        public virtual System.Collections.Generic.IList<SpotifyGenNHibernate.EN.Spotify.ArtistaEN> Artista { get { return artista; } set { artista = value;  } }


        public virtual System.Collections.Generic.IList<SpotifyGenNHibernate.EN.Spotify.AlbumEN> Albumes { get { return albumes; } set { albumes = value;  } }


        public virtual System.Collections.Generic.IList<SpotifyGenNHibernate.EN.Spotify.CancionBibliotecaEN> CancionesBiblioteca { get { return cancionesBiblioteca; } set { cancionesBiblioteca = value;  } }



        public CancionEN()
        {
        }



        public CancionEN(int id, String nombre, double duracion, SpotifyGenNHibernate.Enumerated.Spotify.TGenerosEnum genero, bool comprable, double precio, Nullable<DateTime> fechaLanzamiento, int year, bool disponible, System.Collections.Generic.IList<SpotifyGenNHibernate.EN.Spotify.ArtistaEN> artista, System.Collections.Generic.IList<SpotifyGenNHibernate.EN.Spotify.AlbumEN> albumes, System.Collections.Generic.IList<SpotifyGenNHibernate.EN.Spotify.CancionBibliotecaEN> cancionesBiblioteca)
        {
                this.init (id, nombre, duracion, genero, comprable, precio, fechaLanzamiento, year, disponible, artista, albumes, cancionesBiblioteca);
        }


        public CancionEN(CancionEN cancion)
        {
                this.init (cancion.Id, cancion.Nombre, cancion.Duracion, cancion.Genero, cancion.Comprable, cancion.Precio, cancion.FechaLanzamiento, cancion.Year, cancion.Disponible, cancion.Artista, cancion.Albumes, cancion.CancionesBiblioteca);
        }

        private void init (int id, String nombre, double duracion, SpotifyGenNHibernate.Enumerated.Spotify.TGenerosEnum genero, bool comprable, double precio, Nullable<DateTime> fechaLanzamiento, int year, bool disponible, System.Collections.Generic.IList<SpotifyGenNHibernate.EN.Spotify.ArtistaEN> artista, System.Collections.Generic.IList<SpotifyGenNHibernate.EN.Spotify.AlbumEN> albumes, System.Collections.Generic.IList<SpotifyGenNHibernate.EN.Spotify.CancionBibliotecaEN> cancionesBiblioteca)
        {
                this.Id = id;


                this.Nombre = nombre;

                this.Duracion = duracion;

                this.Genero = genero;

                this.Comprable = comprable;

                this.Precio = precio;

                this.FechaLanzamiento = fechaLanzamiento;

                this.Year = year;

                this.Disponible = disponible;

                this.Artista = artista;

                this.Albumes = albumes;

                this.CancionesBiblioteca = cancionesBiblioteca;
        }

        public override bool Equals (object obj)
        {
                if (obj == null)
                        return false;
                CancionEN t = obj as CancionEN;
                if (t == null)
                        return false;
                if (Id.Equals (t.Id))
                        return true;
                else
                        return false;
        }

        public override int GetHashCode ()
        {
                int hash = 13;

                hash += (null == Id ? 0 : this.Id.GetHashCode ());
                return hash;
        }
        }
}
